草庐IT

mysql GRANT + WHERE

全部标签

sql - WHERE x IN (5) 与 WHERE x = 5 ... 为什么使用 IN?

我最近注意到有人在使用IN时似乎有点不合适。我觉得我错过了一个技巧-也许有速度提升之类的?这个查询:SELECT*FROMpagesWHEREis_visibleIN($visibility)为什么要用它?为什么不:SELECT*FROMpagesWHEREis_visible=$visibility当然,如果是这样的话:SELECT*FROMpagesWHEREis_visibleIN($visibility,$invisibility,$somethingelse)那么WHERExIN(1,2,3)是WHEREx=1ORx=2ORx=3的更好替代方案,对吗?但肯定这是您应该使用IN

mysql - 强制 MySQL 在不使用 JOIN/UNION 的情况下从 WHERE IN 子句返回重复项?

这可能不是很明智,但如果WHEREIN子句中存在重复条件,我想让MySQL返回准确的重复行。这可能吗?举个例子:SELECTcolumnsFROMtableWHEREidIN(1,2,3,4,5,1,2,5,5)我希望MySQL返回id为5的行三次,id为1和2两次,id为3和4一次。由于IN参数的长度以及重复计数(一次、两次、三次等)都是任意的,我不想依赖UNION或JOIN。否则可能发生这样的事情吗? 最佳答案 我不确定您为什么要禁止JOIN,因为它对SQL非常重要。这就像在函数式语言中禁止函数调用。解决这个问题的一个好方法是创

mysql - PL SQL Procedure (Oracle) 比较 where 子句中的变量

这让我发疯。我想对列和变量进行简单比较,但它不起作用。以下行总是计算所有元组,而我只需要那些由where子句条件化的元组。SELECTcount(*)INTOcntfromclasswhereclass.fid=fid;它看起来很简单,但我已经为此工作了几个小时。完整的sql过程是最令人困惑的是,如果我用一些硬编码ID(如105)替换fid,它会给出正确的答案),但是当我使用fid时,它就不再起作用并返回所有类的计数。出于某种原因,总是class.fid=fid。当我使用>、时,返回0计数!createorreplacePROCEDUREpro_report2ASCURSORc_dep

php - MySQL 更新查询 - 竞争条件和行锁定会遵守 'where' 条件吗? (php, PDO, MySQL, InnoDB)

我正在尝试建立一个先到先得的模型销售页面。我们有n个相同类型的项目。我们希望将这n个项目分配给提出请求的前n个用户。每个项目对应一个数据库行。当用户按下购买按钮时,系统会尝试查找尚未售出的条目(reservationCompleted=FALSE)并更新用户ID并设置reservationCompleted为真。由于我使用的数据库引擎是InnoDB,我知道有一个内部锁定机制不允许两个进程在同一行上同时进行更新。我的问题是,如果我使用的语句如下,如果两个请求同时到达,这是否会导致不同的用户被分配到同一行?$query="UPDATEavailable_itemsSETassignedPh

MYSQL WHERE-IN 子查询永远运行

我有一个MySQL表。让我们称之为小部件。Widget表有3个字段:id、type_id和name。我想在一个查询中获取与名为“doodad”的小部件共享type_id的所有小部件。我写了2个查询:给我名称为“doodad”的小部件的type_id。给我所有具有该type_id的小部件。这行得通。每个查询独立实现其目标。但是当我将它们组合成一个嵌套查询时,它会永远运行,无限循环样式。它看起来像这样:SELECT*FROMwidgetsWHEREtype_idIN(SELECTtype_idFROMwidgetsWHEREname='doodad');谁能解释一下?是因为我正在编写一个在

Mysql Where ... In ... AND where ... in ... 应该只匹配相同的索引

我有一个问题:SELECT*FROM`users`WHERE(`firstname`LIKE'Luke'AND`lastname`LIKE'Skywalker')OR(`firstname`LIKE'Foo'AND`lastname`LIKE'Bar')OR(`firstname`LIKE'Tom'AND`lastname`LIKE'Turner');但我想通过使用where...in...使其更具可读性我试过了SELECT*FROMusersWHERE`firstname`IN('Luke','Foo','Tom')AND`lastname`IN('Skywalker','Bar',

mysql - 为什么有 'where'的时候有 'having'

这个问题在这里已经有了答案:SQL-HAVINGvs.WHERE(9个回答)关闭9年前。我知道这已被广泛讨论,但我的研究都无法说服我区分MySQL中的“where”和“having”子句。据我了解,我们可以使用'having'实现'where'子句可以完成的所有事情。例如。从用户名='admin'的用户中选择*。那你为什么需要'where'子句呢?使用where会产生任何性能差异吗?

MySQL 选择 : WHERE (time now) = BETWEEN tablevalue AND tablevalue

我正在寻找一种方法来选择当前时间在该行的两个设定值之间的行。我设置了一个包含3列的表,其中2列包含时间戳(HH:MM:SS),另一列是字符串。有什么办法可以得到当前时间对应的字符串吗?更抽象地说:SELECTStringFROMTableNameWHERE(CurrentTime)BETWEEN(LowerLimitTimeValue)AND(UpperLimitTimeValue);所以基本上,根据当前时间,我的脚本应该输出正确的字符串。我该怎么做?谢谢! 最佳答案 在MySQL中,timestamp是一个很容易混淆的词。如果它们

php - 拉维尔 4 : Where Not Exists

我需要我的模型仅从一个表中返回那些匹配记录在另一个表中不存在的记录。我在想解决方案可能是QueryScopes但文档只涉及表面。所以我的SQL看起来像这样:SELECT*FROMAWHERENOTEXISTS(SELECTA_idFROMBWHEREB.A_id=A.id)这是我的表格:A-------------|id|name|-------------B--------------------|id|A_id|name|--------------------可能没有必要,但这是我的模型。A的模型:classAextendsEloquent{publicfunctionB(){r

mysql - where 子句中的列 'id' 不明确

我收到此错误,但我不知道为什么?ErrorNumber:1052Column'id'inwhereclauseisambiguousSELECT`leads`.*,`customers`.`id`AScustomers_id,`customers`.`name`AScustomers_name,`customers`.`company`AScustomers_company,`customers`.`email`AScustomers_email,`customers`.`phone`AScustomers_phone,`customers`.`created_at`AScustome